package com.icoolkj.ms.pay.service;

import com.icoolkj.ms.common.core.response.ServerResponseEntity;
import com.icoolkj.ms.api.pay.model.PayOrder;

import java.util.Map;

/**
 * 支付服务接口
 *
 * @author icoolkj
 */
public interface IPayService {
    
    /**
     * 创建支付订单
     *
     * @param payOrder 支付订单信息
     * @return 支付参数
     */
    ServerResponseEntity<Map<String, String>> createOrder(PayOrder payOrder);

    /**
     * 处理支付回调
     *
     * @param payType 支付类型
     * @param params 回调参数
     * @return 处理结果
     */
    ServerResponseEntity<Boolean> handlePayNotify(String payType, Map<String, String> params);

    /**
     * 查询支付订单
     *
     * @param orderNo 订单号
     * @return 支付订单信息
     */
    ServerResponseEntity<PayOrder> queryOrder(String orderNo);

    /**
     * 关闭支付订单
     *
     * @param orderNo 订单号
     * @return 操作结果
     */
    ServerResponseEntity<Boolean> closeOrder(String orderNo);

    /**
     * 申请退款
     *
     * @param orderNo 订单号
     * @param refundReason 退款原因
     * @return 操作结果
     */
    ServerResponseEntity<Boolean> refund(String orderNo, String refundReason);
} 